﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using SISCON.Vo;
using SISCON.Bl;
using SISCON.Common;

namespace SISCON.Service
{

    [WebService(Namespace = "http://SISCON.mx/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    [System.Web.Script.Services.ScriptService]
    public class SecurityServices : System.Web.Services.WebService
    {

        private UserBL _UserBL = new UserBL();

        /// <summary>
        /// Manda a llamar al Bl Authenticate
        /// </summary>
        /// <param name="LoginName">Nombre de inicio de sesion</param>
        /// <param name="Password">Contrasenia</param>
        /// <returns>Objeto del tipo REsultObject</returns>
        [WebMethod]
        [System.Xml.Serialization.XmlInclude(typeof(AuthToken))]
        public ResultObject Authenticate(string LoginName, string Password)
        {
            try
            {
                AuthToken authToken = _UserBL.Authenticate(LoginName, Password);
                return new ResultObject(authToken, null);
            }
            catch (Exception ex)
            {
                return new ResultObject(null, ex is SISCONException ? ex.Message : "No fue posible realizar la autenticación. Favor de intentar más tarde.");
            }
        }

        /// <summary>
        /// Manda a llamar al Bl Logout
        /// </summary>
        /// <param name="sessionUUID">Sesion del sistema</param>
        /// <returns>Objeto del tipo ResultObject</returns>
        [WebMethod]
        public ResultObject Logout(string sessionUUID)
        {
            try
            {
                _UserBL.Logout(sessionUUID);
                return new ResultObject("ok", null);
            }
            catch (Exception ex)
            {
                return new ResultObject(null, ex is SISCONException ? ex.Message : "No fue posible terminar la sesión. Favor de intentar más tarde.");
            }
        }
    }
}
